package com.example.match.service;

import com.example.match.model.domain.Team;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.match.model.domain.User;
import com.example.match.model.dto.TeamQuery;
import com.example.match.model.request.TeamJoinRequest;
import com.example.match.model.request.TeamQuitRequest;
import com.example.match.model.request.TeamUpdateRequest;
import com.example.match.model.vo.TeamUserVO;

import java.util.List;

/**
* @author 17268
* @description 针对表【team(队伍)】的数据库操作Service
* @createDate 2024-10-08 18:42:40
*/
public interface TeamService extends IService<Team> {

    /**
     * 创建队伍
     * @param team 队伍信息
     * @param loginUser 当前登录用户
     * @return 队伍id
     */
    long createTeam(Team team, User loginUser);

    /**
     * 查询队伍列表
     * @param teamQuery 查询条件
     * @return 队伍列表
     */
    List<TeamUserVO> listTeams(TeamQuery teamQuery, boolean isAdmin);

    /**
     * 修改队伍信息
     * @param teamUpdateRequest 队伍信息
     * @param loginUser 当前登录用户
     * @return 是否成功
     */
    boolean updateTeam(TeamUpdateRequest teamUpdateRequest, User loginUser);

    /**
     * 用户加入队伍
     * @param teamJoinRequest 队伍加入请求
     * @param loginUser 当前登录用户
     * @return 是否成功
     */
    boolean joinTeam(TeamJoinRequest teamJoinRequest, User loginUser);

    /**
     * 用户退出队伍
     * @param teamQuitRequest 队伍退出请求
     * @param loginUser 当前
     * @return 是否成功
     */
    boolean quitTeam(TeamQuitRequest teamQuitRequest, User loginUser);

    /**
     * 解散队伍
     * @param id 队伍id
     * @return 是否成功
     */
    boolean deleteTeam(long id, User loginUser);

    /**
     * 获取当前用户加入的队伍
     *
     * @param loginUser 当前登录用户
     * @return 队伍列表
     */
    List<TeamUserVO> listTeamsByUser(User loginUser);
}
